package com.kjc.demo.rcservice.util;

import java.net.InetAddress;
import java.net.UnknownHostException;

import javax.servlet.http.HttpServletRequest;
/**
 * 
 * @author kangjichang
 * @date 2018/11/05
 */
public class IpUtil {
	 public static String getIpAddr(HttpServletRequest request) {
	        String ipAddress = null;
	        try {
	            ipAddress = request.getHeader("x-forwarded-for");
	            String unknown = "unknown";
	            if (ipAddress == null || ipAddress.length() == 0 || unknown.equalsIgnoreCase(ipAddress)) {
	                ipAddress = request.getHeader("Proxy-Client-IP");
	            }
	            if (ipAddress == null || ipAddress.length() == 0 || unknown.equalsIgnoreCase(ipAddress)) {
	                ipAddress = request.getHeader("WL-Proxy-Client-IP");
	            }
	            if (ipAddress == null || ipAddress.length() == 0 || unknown.equalsIgnoreCase(ipAddress)) {
	                ipAddress = request.getRemoteAddr();
	                String localhost = "127.0.0.1";
	                if (ipAddress.equals(localhost)) {
	                    // 根据网卡取本机配置的IP
	                    InetAddress inet = null;
	                    try {
	                        inet = InetAddress.getLocalHost();
	                    } catch (UnknownHostException e) {
	                        e.printStackTrace();
	                    }
	                    ipAddress = inet.getHostAddress();
	                }
	            }
	            // 对于通过多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割// "***.***.***.***".length()
	            Integer length = 15;
	            if (ipAddress != null && ipAddress.length() > length) { 
	                // = 15
	            	String douhao = ",";
	                if (ipAddress.indexOf(douhao) > 0) {
	                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(","));
	                }
	            }
	        } catch (Exception e) {
	            ipAddress="";
	        }
	        
	        return ipAddress;
	    }
}
